package com.liang.text;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Text {
    /*
    1.创建User类，包含：id(用户编号)、username(用户名)、password(密码)
    2.创建Product类，包含：id(商品编号)、name(商品名称)、price(商品价格)
    3.将user.txt中的内容读取出来，并根据,切割，将每一个用户信息封装成User对象。并将User对象保存到集合中。
    4.将product.txt中的内容读取出来，并根据,切割，将每一个商品信息封装成Product对象。
    并将Product对象保存到集合中。
    5.通过键盘输入用户名和密码，判断输入的用户名和密码是否在保存User对象的集合中存在。
        不存在：提示输入的用户名和密码有误。并重新输入！
        存在：展示商品信息的操作界面
               欢迎来到商品信息管理系统：1-查询商品    2-添加商品
    查询商品功能：
        判断保存Product对象的集合是否有数据
            没有：提示目前没有商品可查看。
            有：展示商品的编号、名称、价格。
    添加商品功能：
        通过键盘输入商品编号、名称、价格
        对编号进行判断，是否重复。
           重复：重新输入编号。
           不重复：将输入的信息封装到一个Product对象，并添加到Product对象的集合中。
        将Product对象的集合数据重新写回product.txt文件中。
 */
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        ArrayList<User> userList = new ArrayList<>();
        ArrayList<Product> productList = new ArrayList<>();

        saveMessage(userList,productList);

        User user = user(userList, productList);

        while (true) {
            System.out.println("欢迎来到商品信息管理系统：1-查询商品    2-添加商品    3-退出");
            int num = scanner.nextInt();
            switch (num) {
                case 1:
                    showProduct(productList);
                    break;
                case 2:
                    updateProduct(productList);
                    break;
                case 3:
                    System.exit(0);
                default:
                    System.out.println("请输入正确的编号:");
            }
        }
    }

    private static void updateProduct(ArrayList<Product> productList) throws IOException {
        /*添加商品功能：
        通过键盘输入商品编号、名称、价格
        对编号进行判断，是否重复。
        重复：重新输入编号。
        不重复：将输入的信息封装到一个Product对象，并添加到Product对象的集合中。
        将Product对象的集合数据重新写回product.txt文件中。*/
        Scanner sc = new Scanner(System.in);
        String id;
        while (true) {
            System.out.println("请输入商品的编号：");
            id = sc.nextLine();
            int k=-1;
            for (int i = 0; i < productList.size(); i++) {
                if (productList.get(i).getId().equals(id)) {
                    k=i;
                    break;
                }
            }
            if (k != -1) {
                System.out.println("请重新输入编号");
            }else{
               break;
            }
        }
        System.out.println("请输入商品的名称：");
        String name= sc.nextLine();
        System.out.println("请输入商品的价格：");
        String s = sc.nextLine();
        int price = Integer.parseInt(s);

        Product pro = new Product(id, name, price);
        productList.add(pro);

        saveProduct(productList);
    }

    private static void saveProduct(ArrayList<Product> productList) throws IOException {
        /*将Product对象的集合数据重新写回product.txt文件中。*/
        BufferedWriter bw = new BufferedWriter(new FileWriter("day_13\\product.txt"));
        for (Product product : productList) {
            bw.write(product.getId()+","+product.getName()+","+product.getPrice());
            bw.newLine();
        }
        bw.close();
    }


    private static void showProduct(ArrayList<Product> productList) {
        /*查询商品功能：
        判断保存Product对象的集合是否有数据
        没有：提示目前没有商品可查看。
        有：展示商品的编号、名称、价格。*/
        if (productList.size() == 0) {
            System.out.println("提示目前没有商品可查看。");
        }else{
            for (Product product : productList) {
                System.out.println("编号:"+product.getId()+",名称:"+product.getName()+",价格:"+product.getPrice());
            }
        }
    }

    private static User user(ArrayList<User> userList, ArrayList<Product> productList) {
//        通过键盘输入用户名和密码，判断输入的用户名和密码是否在保存User对象的集合中存在。
        Scanner sc = new Scanner(System.in);
        int id=-1;
        while (true) {
            System.out.println("请输入用户名：");
            String username = sc.nextLine();
            for (int i = 0; i < userList.size(); i++) {
                if (username.equals(userList.get(i).getUsername())) {
                    id=i;
                }
            }
            if (id == -1) {
                System.out.println("用户名不存在，请重新输入!");
            }else{
                break;
            }
        }
        while (true) {
            System.out.println("请输入密码：");
            String password = sc.nextLine();
            if (userList.get(id).getPassword().equals(password)) {
                break;
            }
        }
        return userList.get(id);
    }

    private static void saveMessage(ArrayList<User> userList, ArrayList<Product> productList) throws IOException {

        /*3.将user.txt中的内容读取出来，并根据,切割，将每一个用户信息封装成User对象。
        并将User对象保存到集合中。
        4.将product.txt中的内容读取出来，并根据,切割，将每一个商品信息封装成Product对象。
        并将Product对象保存到集合中。*/
        BufferedReader br = new BufferedReader(new FileReader("day_13\\user.txt"));
        String line;
        while ((line = br.readLine()) != null) {
            String[] split = line.split(",");
            User user = new User(split[0], split[1], split[2]);
            userList.add(user);
        }
        BufferedReader br1 = new BufferedReader(new FileReader("day_13\\product.txt"));
        String line1;
        while ((line1 = br1.readLine()) != null) {
            String[] split = line1.split(",");
            Product product = new Product(split[0], split[1], Integer.parseInt(split[2]));
            productList.add(product);
        }
//        System.out.println(userList+"---"+productList);
    }

}
